package com.xjc.business.service;

import com.xjc.business.entity.domain.StudentChangeBedApplys;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xjc.business.entity.po.classadmin.ClassAdminExChangeDormitoryApplyOpera;
import com.xjc.business.entity.po.stu.ExchangeDormitoryApplyPo;
import com.xjc.business.entity.vo.PageVo;
import com.xjc.business.entity.vo.classadmin.ClassExchangeDormitoryApplyVo;
import com.xjc.business.entity.vo.coladmin.ColExchangeDormitoryApplyVo;
import com.xjc.business.entity.vo.stu.CurrentSureDormitoryVo;
import com.xjc.business.entity.vo.stu.ExChangeDormitoryApplyVo;
import com.xjc.system.result.Result;

/**
* @author root
* @description 针对表【student_change_bed_applys(学生换宿申请表)】的数据库操作Service
* @createDate 2025-01-25 10:24:32
*/
public interface StudentChangeBedApplysService extends IService<StudentChangeBedApplys> {

    /**
     * 获取当前需要审批的他人换宿申请信息
     * @param id 学生微信id
     * @return 宿舍信息
     */
    Result<CurrentSureDormitoryVo> getCurrentSureDormitory(Integer id);

    /**
     * 获取当前换宿申请信息
     * @param id 学生微信id
     * @return 宿舍信息
     */
    Result<ExChangeDormitoryApplyVo> getExChangeDormitoryApply(Integer id);

    /**
     * 提交换宿申请
     * @param exchangeDormitoryApplyPo 换宿申请信息
     * @return 反馈
     */
    Result<String> sureExchangeDormitory(ExchangeDormitoryApplyPo exchangeDormitoryApplyPo);

    /**
     * 目标宿舍拥有者改变申请换宿状态
     * @param id 申请Id
     * @return 反馈
     */
    Result<String> changeExchangeDormitoryApplyStatus(Integer id);

    /**
     * 获取换宿申请列表
     * @param pageSize 每页显示条数
     * @param currentPage 当前页
     * @param classAdminId 辅导员id
     * @param status 状态
     * @return Result
     */
    Result<PageVo<ClassExchangeDormitoryApplyVo>> getExchangeDormitoryApplyList(Integer pageSize, Integer currentPage, Integer classAdminId, Integer status);

    /**
     * 获取换宿申请列表
     * @param pageSize 每页显示条数
     * @param currentPage 当前页
     * @param collegeAdminId 辅导员id
     * @param status 状态
     * @return Result
     */
    Result<PageVo<ColExchangeDormitoryApplyVo>> getExchangeDormitoryApplyListWithCollege(Integer pageSize, Integer currentPage, Integer collegeAdminId, Integer status);

    /**
     * 学院管理员审批换宿申请
     * @param classAdminExChangeDormitoryApplyOpera 审批意见
     * @return Result
     */
    Result<String> changeDormitoryApplyOpera2(ClassAdminExChangeDormitoryApplyOpera classAdminExChangeDormitoryApplyOpera);

    /**
     * 辅导员审批换宿申请
     * @param classAdminExChangeDormitoryApplyOpera 审批意见
     * @return Result
     */
    Result<String> changeDormitoryApplyOpera(ClassAdminExChangeDormitoryApplyOpera classAdminExChangeDormitoryApplyOpera);
}
